home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nebula 2
/
Nebula Two.iso
/
SourceCode
/
AlexNeXTSTEPSource
/
Source
/
Chapter6_Events
/
ControlDemo
/
ControlDemo.m
< prev
next >
Wrap
Text File
|
1995-06-12
|
3KB
|
128 lines
#import <appkit/appkit.h>
// a minimal program to demonstrate how
// to add controls to a window
main()
{
// create an application object
// to establish connection to
// Window Server
id NXApp = [Application new];
id theWindow;
id theMenu;
id theButton;
id theSlider;
id theTextField;
id theForm;
id targetWindow;
NXRect theRect;
// create a window that's at 125, 125
// and is 200 by 300 pixels
NXSetRect(&theRect, 125, 125, 200, 300);
theWindow = [ [Window alloc]
initContent:&theRect
style: NX_TITLEDSTYLE
backing:NX_BUFFERED
buttonMask:NX_MINIATURIZEBUTTONMASK
defer:YES];
// create the menu
theMenu = [ [Menu alloc]
initTitle: [NXApp appName] ];
// create the menu option
[theMenu addItem:"Quit"
action:@selector(terminate:)
keyEquivalent:'q'];
// resize menu to accomodate menu option
[theMenu sizeToFit];
[NXApp setMainMenu:theMenu];
// create a button that's 80 by 20
NXSetRect(&theRect, 0, 0, 80, 20);
theButton = [ [Button alloc]
initFrame:&theRect];
// set the title for the button
[theButton setTitle:"Press Here"];
// since the button is a view, we need
// to install it as the subview of the
// window's contentview or else it
// won't draw
[ [theWindow contentView]
addSubview: theButton];
// create the target window for the button
targetWindow = [ [Window alloc]
initContent:NULL
style: NX_RESIZEBARSTYLE
backing:NX_BUFFERED
buttonMask:NX_MINIATURIZEBUTTONMASK
defer:YES];
// make window target of button
[theButton setTarget:targetWindow];
// when pressed, button sends
// makeKeyAndOrderFront: message
// to the window
[theButton setAction:@selector
(makeKeyAndOrderFront:)];
// create a horizontal slider 100 x 15
NXSetRect(&theRect, 0, 100, 100, 15);
theSlider = [ [Slider alloc]
initFrame:&theRect];
// set the min value to 0.0
[theSlider setMinValue:0.0];
// set the max value to 10.0
[theSlider setMaxValue:10.0];
[ [theWindow contentView]
addSubview:theSlider];
// create a textfield that's 75 by 20
NXSetRect(&theRect, 0, 150, 75, 20);
theTextField = [ [TextField alloc]
initFrame:&theRect];
// make the text editable
[theTextField setEditable:YES];
[ [theWindow contentView]
addSubview:theTextField];
// make the textfield the target of
// the slider and vice versa
[theSlider setMinValue:0.0];
[theSlider setMaxValue:10.0];
[theSlider setTarget:theTextField];
[theSlider setAction:
@selector(takeFloatValueFrom:)];
[theTextField setTarget:theSlider];
[theTextField setAction:
@selector(takeFloatValueFrom:)];
// create a form that's 150 by 100
NXSetRect(&theRect, 0, 200, 150, 100);
theForm = [ [Form alloc]
initFrame:&theRect];
// add three entries to the form
[theForm addEntry: "Name"];
[theForm addEntry: "Address"];
[theForm addEntry: "Phone"];
// set the size of the form
[theForm sizeToFit];
[ [theWindow contentView]
addSubview:theForm];
[theForm setTarget:theButton];
// button should act as though
// it had been cliked
[theForm setAction:
@selector(performClick:)];
// send the window to the front
// and display it
[theWindow makeKeyAndOrderFront:nil];
// go into event loop to wait for events
[NXApp run];
}